Many computer systems include a memory subsystem for which multiple devices within the system (e.g., processors, input/output devices, etch) can issue reads and writes. For example, multiple devices within the system can issue a write to the same line of data within the memory subsystem. To insure coherency of the data, a mechanism such as a directory structure is implemented. In a directory structure, the state of each line of data is stored and managed. The state information may indicate, for example, the “ownership” of each line. A device can write data to a target line of data once that device is granted ownership of the data. Restricting writing a line of data to only the one device that is given ownership rights protects against coherency problems that otherwise would result if multiple devices were permitted to write concurrently to the same line of data.
The directory itself is typically stored in memory and thus memory reads and writes of the directory are performed simply to maintain data coherency. Unfortunately, bus bandwidth (particular for memory writes) may be limited in some systems. Having to write and read the directory is useful to maintain data coherency, but contributes to the bandwidth problem.